// Generated from C:/Users/luzhihao/Desktop/workplace/shizhen_compiler/src/main/java/org/example/grammar/SZCGrammar.g4 by ANTLR 4.13.1
package org.example.grammar;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;

/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by {@link SZCGrammarParser}.
 *
 * @param <T> The return type of the visit operation. Use {@link Void} for
 * operations with no return type.
 */
public interface SZCGrammarVisitor<T> extends ParseTreeVisitor<T> {
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#prog}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitProg(SZCGrammarParser.ProgContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#abstractStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAbstractStatement(SZCGrammarParser.AbstractStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#returnStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitReturnStatement(SZCGrammarParser.ReturnStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#blockStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBlockStatement(SZCGrammarParser.BlockStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#funcDef}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFuncDef(SZCGrammarParser.FuncDefContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#funcName}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFuncName(SZCGrammarParser.FuncNameContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#block}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBlock(SZCGrammarParser.BlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#exp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExp(SZCGrammarParser.ExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#primaryExp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryExp(SZCGrammarParser.PrimaryExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#unaryExp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnaryExp(SZCGrammarParser.UnaryExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#unaryOp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitUnaryOp(SZCGrammarParser.UnaryOpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#mulExp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMulExp(SZCGrammarParser.MulExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#addExp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAddExp(SZCGrammarParser.AddExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#relExp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRelExp(SZCGrammarParser.RelExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#eqExp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEqExp(SZCGrammarParser.EqExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#lAndExp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLAndExp(SZCGrammarParser.LAndExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#lOrExp}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLOrExp(SZCGrammarParser.LOrExpContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#lval}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLval(SZCGrammarParser.LvalContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#initVal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInitVal(SZCGrammarParser.InitValContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#varDef}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVarDef(SZCGrammarParser.VarDefContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#varDefStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVarDefStatement(SZCGrammarParser.VarDefStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#varDeclStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVarDeclStatement(SZCGrammarParser.VarDeclStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#conditionCombine}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionCombine(SZCGrammarParser.ConditionCombineContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#ifElseStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfElseStatement(SZCGrammarParser.IfElseStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#whileStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitWhileStatement(SZCGrammarParser.WhileStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#breakStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBreakStatement(SZCGrammarParser.BreakStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link SZCGrammarParser#continueStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitContinueStatement(SZCGrammarParser.ContinueStatementContext ctx);
}